Added make prepare before Phase 1 make modules#27
Conversation
Co-authored-by: dianlight <dianlight@users.noreply.github.com>
|
User opencode-agent[bot] does not have write permissions |
|
/oc I have still an error for rpi. See run #150. You can also try yourself until all is ok |
Key changes: - Phase 1: Use MODULE_CROSS_COMPILE (Buildroot toolchain) for both make modules_prepare and make modules, instead of mixing system and Buildroot toolchains - Phase 2 QUIC: Add make modules_prepare before make modules after source patching - Phase 2 ZFS: Resolve MODULE_CROSS_COMPILE earlier and use consistently throughout the step - All phases: Use modules_prepare (which generates module.lds) instead of bare prepare for module build preparation
|
Pushed commit Root cause analysis: Only RPi boards (rpi3_64, rpi4_64, rpi5_64, yellow) fail in Phase 1 "Build base modules" — all other arm64 boards succeed. The RPi kernel fork at 6.18.33 (vs mainline 6.18.35) has a different Changes made (
|
|
User opencode-agent[bot] does not have write permissions |
|
User opencode-agent[bot] does not have write permissions |
PR Review: #27Changes SummaryAdds Code Quality Issues
Potential Bugs
Suggestions
VerdictThe changes are correct and address the root cause (cross-compiler mismatch on RPi's 6.18.33 fork). The core fix — using the Buildroot Approved with suggestions above for follow-up cleanup. |
|
🛠️ [QUALITY] DRY violation — Cross-compiler resolution block copy-pasted 3 times The
If the path, architecture list, or fallback logic changes, all three must be updated in lockstep. Extract this into a job-level step or a composite action once, and export # Add as a dedicated step before the first build step
- name: Resolve Buildroot cross-compiler
run: |
OS_DIR="${GITHUB_WORKSPACE}/operating-system"
case "${ARCH}" in
arm64) MCC="${OS_DIR}/output/host/bin/aarch64-buildroot-linux-gnu-" ;;
x86) MCC="${OS_DIR}/output/host/bin/x86_64-buildroot-linux-gnu-" ;;
*) MCC="${CROSS_COMPILE}" ;;
esac
[[ -x "${MCC}gcc" ]] || MCC="${CROSS_COMPILE}"
echo "MODULE_CROSS_COMPILE=${MCC}" >> "$GITHUB_ENV"Then remove the three inline blocks and reference 🛠️ [QUALITY] At line 620-625 you run 🚨 [CRITICAL] All three echo "[INFO] Running 'make modules_prepare' ..."
make -C "${LINUX_SRC}" \
ARCH="${ARCH}" \
CROSS_COMPILE="${MODULE_CROSS_COMPILE}" \
modules_prepare \
2>&1 | tail -60 || echo "[WARN] modules_prepare exited non-zero, continuing"This is the pattern already implied by 💡 [NITPICK] Minor: extra blank line inconsistency between Phase 1 and Phase 2 Phase 1 has a blank line before the Summary: The core fix (using |
…into opencode/issue26-20260616220319
Why this change was needed: The previous dedup step removed rp1-cfe/ and patched the parent Makefile, but left the parent Kconfig untouched. olddefconfig parses Kconfig files before any compilation starts, so it died with "can't open file rp1-cfe/Kconfig" on all three RPi boards (rpi3_64, rpi4_64, rpi5_64). What changed: Added sed -i '/rp1-cfe/d' on the parent Kconfig alongside the existing Makefile patch, and updated the log message accordingly. Problem solved: All RPi board builds no longer fail with "can't open file" during olddefconfig when both rp1-cfe/ and rp1_cfe/ co-exist in the kernel tree. Co-Authored-By: Claude <noreply@anthropic.com>
|
Here is my review of the PR changes across the three phases in 🛠️ [QUALITY] DRY violation — Cross-compiler resolution block copy-pasted 3 times The
If the path, arch list, or fallback logic ever changes, all three must be updated in lockstep. Extract once into a dedicated step and export to Then remove the three inline resolution blocks and replace them with a plain 🛠️ [QUALITY] At line 659–664 you run (Alternatively, keep 🚨 [CRITICAL] All three Add a diagnostic fallback to continue when Apply the same pattern to the QUIC (line 608–613) and ZFS (line 722–727) phases. 💡 [NITPICK] Inconsistent fallback style for Phase 1 (lines 520–522) uses an 💡 [NITPICK] Missing blank line before QUIC Phase 1 (line 525) and ZFS (line 659) have a blank line before the Summary: The core fix — using the Buildroot |
…into opencode/issue26-20260616220319
Why this change was needed:
The heredoc pattern used to capture github.event.pull_request.body placed
a ${{ }} expression and the PR_BODY_EOF delimiter at column 0 inside the
run: | block. YAML block scalars terminate at any line with lower
indentation than the block content, so the parser saw those lines as
outside the scalar and raised a syntax error on line 81.
What changed:
PR_BODY is now declared in the step's env: map as
PR_BODY: ${{ github.event.pull_request.body }}
and the run: script reads it directly from the environment variable.
The heredoc and its delimiters are gone entirely.
Problem solved:
The workflow file is valid YAML again. GitHub Actions safely handles
multi-line PR body values (newlines, special chars) through env vars
without any YAML quoting issues.
Co-Authored-By: Claude <noreply@anthropic.com>
|
Here is my review of the PR changes across 🛠️ [QUALITY] Cross-compiler resolution block copy-pasted 3 timesThe
If the path, arch list, or fallback logic changes, all three must be updated in lockstep. Extract this once into a dedicated step before Phase 1 and export to Then remove the three inline resolution blocks (lines 514–523, 601–607, 650–657) and replace them with just 💡 [NITPICK] Inconsistent fallback style for toolchain checkPhase 1 (lines 521–523) uses an Apply to lines 521–523 in Phase 1. 💡 [NITPICK] Missing blank line before QUIC modules_prepare echoPhase 1 (line 526) and ZFS (line 723) have a blank line before the Insert a blank line before line 609 for visual consistency. Summary: The core fix — consistently using the Buildroot |





Fix applied: Added an explicit
make preparestep beforemake modulesin Phase 1 (base module build) of the workflow.Analysis of the failure (workflow run #148):
rpi3_64,rpi4_64,rpi5_64,yellow) failed at the "Build base modules" step95b85bebbedc) has different build infrastructure from mainline 6.18.35 used by other boardsmake preparecall for ZFS compatibility, but Phase 1 was missing itThe fix adds
make preparebeforemake modulesin.github/workflows/main_build.yml:436-441, ensuring the kernel source tree generates all required build artifacts (utsrelease.h,autoconf.h, architecture-specific headers, etc.) before module compilation. This follows the same pattern already established in Phase 2 for ZFS module building.Closes #26
opencode session | github run